/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pio.action.administrador.paradas;

import pio.action.administrador.preinscripcion.*;
import pio.action.administrador.preseleccion.*;
import pio.action.administrador.*;
import DBMS.DataBaseManager;
import clases.*;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfPCell;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

/**
 *
 * @author charles
 */
public class GenerarReporte extends DispatchAction {

    public ActionForward pdf(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        ReporteParada reporte = new ReporteParada();
        DataBaseManager dbms = DataBaseManager.getInstance();
        reporte.setTipo(TipoReporte.INSTITUCION);
        reporte.setNumAutenticacion();
        while (dbms.existeNumAutenticacion(reporte.getNumAutenticacion())) {
            reporte.setNumAutenticacion();
        }
        dbms.agregarReporte(reporte);
        reporte.setId(dbms.buscarID(reporte.getNumAutenticacion()));
        reporte.setParadas(dbms.consultarParada(new Parada()));
        reporte.setInstitucion(dbms.consultarInstituciones());
        String path = Configuracion.getReportesPath() + reporte.getTipo() + reporte.getId() + ".pdf";
        try {
            reporte.generar(path);
            request.getSession().setAttribute("reporte", path);
            request.setAttribute("reporte", path);
            return mapping.findForward("pdf");
        } catch (Exception e) {
            reporte.setMensaje("Problemas con el servidor.");
            return mapping.findForward("failure");
        }
    }
    
        public ActionForward cvs(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        ReporteParada reporte = new ReporteParada();
        reporte.setNumAutenticacion();
        DataBaseManager dbms = DataBaseManager.getInstance();
        reporte.setParadas(dbms.consultarParada(new Parada()));
        reporte.setInstitucion(dbms.consultarInstituciones());;
        String path = Configuracion.getReportesPath() + reporte.getNumAutenticacion()+".cvs";
        try {
            File file = new File(path);
            file.createNewFile();
            FileWriter fr = new FileWriter(file);
            fr.write("Nombre,Instituciones \n");
              for (Parada par : reporte.getParadas()) {
                String st = ""+par.getNombre()+",";
                for(Institucion i : reporte.getInstitucion()){
                    if (i.getIdParada()==par.getId()){
                        st += i.getNombre() + "\n";
                    } 
                }
                fr.write(st);
            }
            fr.close();
            request.getSession().setAttribute("reporte", path);
            request.setAttribute("reporte", path);
            return mapping.findForward("cvs");
        } catch (Exception e) {
            reporte.setMensaje("Problemas con el servidor.");
            return mapping.findForward("failure");
        }
    }
}
